package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.request.MemberOrganizationAddVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.request.MemberOrganizationDeleteVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.request.MemberOrganizationGetVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.request.MemberOrganizationUpdateVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.response.MemberOrgTreeVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.response.MemberOrganizationQueryVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 会员能力 - 会员组织机构服务接口
 * @author 万宁
 * @version 2.0.0
 * @date 2020-06-28
 */
public interface IMemberAbilityOrganizationService {

    /**
     * 新增会员组织架构菜单
     * @param headers HttpHeaders信息
     * @param addVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> addMemberOrg(HttpHeaders headers,  MemberOrganizationAddVO addVO);

    /**
     * 根据菜单Id，更新组织机构信息
     * @param headers HttpHeaders信息
     * @param updateVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateMemberOrg(HttpHeaders headers, MemberOrganizationUpdateVO updateVO);

    /**
     * 删除一个会员组织架构
     * @param headers Http头部信息
     * @param deleteVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> deleteMemberOrg(HttpHeaders headers, MemberOrganizationDeleteVO deleteVO);

    /**
     * 查询一个会员组织架构
     * @param headers Http头部信息
     * @param getVO 接口参数
     * @return 操作结果
     */
    Wrapper<MemberOrganizationQueryVO> getMemberOrg(HttpHeaders headers, MemberOrganizationGetVO getVO);

    /**
     * 查询会员的所有组织架构，以树形菜单的形式返回
     * @param headers HttpHeaders信息
     * @return 操作结果
     */
    Wrapper<List<MemberOrgTreeVO>> treeMemberOrg(HttpHeaders headers);

    /**
     * 查询会员的（非门店）所有组织架构，以树形菜单的形式返回
     * @param headers HttpHeaders信息
     * @return 查询结果
     */
    Wrapper<List<MemberOrgTreeVO>> nonStoreTreeMemberOrg(HttpHeaders headers);
}
